home *** CD-ROM | disk | FTP | other *** search
- /*
- ** Amster - Preferences
- ** Copyright © 1999-2000 by Gürer Özen
- ** Copyright © 2000-2001 by Jacob Laursen
- **
- ** This program is free software; you can redistribute it and/or modify
- ** it under the terms of the GNU General Public License as published by
- ** the Free Software Foundation; either version 2 of the License, or
- ** (at your option) any later version.
- **
- ** This program is distributed in the hope that it will be useful,
- ** but WITHOUT ANY WARRANTY; without even the implied warranty of
- ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- ** GNU General Public License for more details.
- **
- ** You should have received a copy of the GNU General Public License
- ** along with this program; if not, write to the Free Software
- ** Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- */
-
- #include "amster.h"
-
- #include <MUI/NListview_mcc.h>
- #include <MUI/textinput_mcc.h>
- #include <libraries/asl.h>
-
- #include <proto/dos.h>
-
- #include "amster_Cat.h"
-
- struct prefsdata myprefs;
- struct prefsdata *prf = &myprefs;
-
- int prf_eventflags[] = { 3, 0, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 1, 1, 1 };
-
- struct MUI_CustomClass *QueueClass;
-
- MUI_DISPATCH_DECL(QueueDispatcher);
- ULONG prf_new(struct IClass *cl, Object *obj, struct opSet *msg);
- void prf_set(struct prfdata *data);
- void prf_use(struct prfdata *data);
- void snd_play(char *fname);
- void prf_entry(struct prfdata *data);
-
-
- MUI_DISPATCH(prf_dispatch)
- {
- switch(msg->MethodID) {
- case OM_NEW:
- return(prf_new(cl, obj, (APTR)msg));
- case PRF_UPDATE:
- if (gui_onlinestate == ONLINE) nap_sendbuf(NAPC_EMAILCHANGE, prf->email);
- else MUI_Request(gui->app, gui->swin, 0L, (char *)MSG_ERROR_TITLE, (char *)MSG_OK_GAD, (char *)MSG_ERROR_UPDATEEMAIL);
- return NULL;
- case PRF_OPEN:
- prf_set(INST_DATA(cl, obj));
- set(obj, MUIA_Window_Open, TRUE);
- return NULL;
- case PRF_USE:
- prf_use(INST_DATA(cl, obj));
- set(obj, MUIA_Window_Open, FALSE);
- return NULL;
- case PRF_LASTSAVED:
- {
- u_long tmp;
- prf_setup(0, NULL);
- if (prf_load("ENVARC:"AMSTER_PREFS)) {
- DoMethod(gui->searchpanel, SEARCH_SET);
- GetAttr(MUIA_Window_Open, obj, &tmp);
- if (tmp==TRUE) prf_set(INST_DATA(cl,obj));
- }
- return NULL;
- }
- case PRF_SAVE:
- prf_use(INST_DATA(cl, obj));
- set(obj, MUIA_Window_Open, FALSE);
- prf_save("ENVARC:"AMSTER_PREFS);
- return NULL;
- case PRF_SAVEALL:
- {
- u_long tmp;
- GetAttr(MUIA_Window_Open, obj, &tmp);
- if (tmp==TRUE) {
- prf_use(INST_DATA(cl,obj));
- }
- else prf_save("ENV:"AMSTER_PREFS);
- prf_save("ENVARC:"AMSTER_PREFS);
- return NULL;
- }
- case PRF_CANCEL:
- set(obj, MUIA_Window_Open, FALSE);
- return NULL;
- case PRF_TESTSND:
- {
- u_long tmp;
- struct prfdata *data = INST_DATA(cl,obj);
- GetAttr(MUIA_String_Contents, data->ST_EventSound, &tmp);
- if (((char *)tmp)[0] != '\0') snd_play((char *)tmp);
- return NULL;
- }
- case PRF_ENTRY:
- prf_entry(INST_DATA(cl,obj));
- return NULL;
- case PRF_VALIDDELAY:
- {
- u_long tmp;
- struct prfdata *data = INST_DATA(cl,obj);
- GetAttr(MUIA_String_Integer, data->ST_QueueDelay, &tmp);
- if ((int)tmp < 1) set(data->ST_QueueDelay, MUIA_String_Integer, prf->QueueDelay);
- return NULL;
- }
- }
- return DoSuperMethodA(cl, obj, msg);
- }
-
-
- /*
- ** This is the Queue custom class, a sub class of Slider.mui. Overrides the
- ** MUIM_Numeric_Stringify method to implement custom display in slider gadget.
- */
-
- MUI_DISPATCH(QueueDispatcher)
- {
- if (msg->MethodID==MUIM_Numeric_Stringify)
- {
- struct QueueData *data = INST_DATA(cl,obj);
- struct MUIP_Numeric_Stringify *m = (APTR)msg;
-
- if (m->value<26)
- {
- sprintf(data->buf,"%3ld", m->value);
- }
- else
- {
- strcpy(data->buf, MSG_PRF_QUEUE_UNLIMITED);
- }
- return((ULONG)data->buf);
- }
- return(DoSuperMethodA(cl,obj,msg));
- }
-
-
- ULONG prf_new(struct IClass *cl, Object *obj, struct opSet *msg)
- {
- static char *pages[] = {
- (char *)_MSG_PRF_USER_TAB,
- (char *)_MSG_PRF_OPTIONS_TAB,
- (char *)_MSG_PRF_EVENTS_TAB,
- (char *)_MSG_PRF_ADVANCED_TAB,
- NULL
- };
- static char *events[] = {
- (char *)_MSG_PRF_EVT_START,
- (char *)_MSG_PRF_EVT_EXIT,
- (char *)_MSG_PRF_EVT_CONN,
- (char *)_MSG_PRF_EVT_DISC,
- (char *)_MSG_PRF_EVT_DOWNLOAD_START,
- (char *)_MSG_PRF_EVT_DLFIN,
- (char *)_MSG_PRF_EVT_DOWNLOAD_ERROR,
- (char *)_MSG_PRF_EVT_DOWNLOAD_ABORT,
- (char *)_MSG_PRF_EVT_UPLOAD_START,
- (char *)_MSG_PRF_EVT_ULFIN,
- (char *)_MSG_PRF_EVT_UPLOAD_ERROR,
- (char *)_MSG_PRF_EVT_UPLOAD_ABORT,
- (char *)_MSG_PRF_EVT_INCOMINGMSG,
- (char *)_MSG_PRF_EVT_LIBRARY_DOUBLECLICK,
- (char *)_MSG_PRF_EVT_DOWNLOAD_DOUBLECLICK,
- (char *)_MSG_PRF_EVT_PLAY,
- NULL
- };
- static char *lamps[] = {
- (char *)_MSG_PRF_LAMPLAMP,
- (char *)_MSG_PRF_LAMPTWF,
- NULL
- };
- static char *ServerListOpts[] = {
- (char *)_MSG_PRF_SERVERLIST_FORGET,
- (char *)_MSG_PRF_SERVERLIST_SAVE,
- (char *)_MSG_PRF_SERVERLIST_CACHE,
- NULL
- };
- static char *AutoCleanupOpts[] = {
- (char *)_MSG_PRF_AUTOCLEANUP_NONE,
- (char *)_MSG_PRF_AUTOCLEANUP_DOWNLOADS,
- (char *)_MSG_PRF_AUTOCLEANUP_UPLOADS,
- (char *)_MSG_PRF_AUTOCLEANUP_BOTH,
- NULL
- };
-
- struct prfdata *data;
- Object *ST_User, *ST_Password, *ST_EMail, *EMailButton, *TG_BypassReg;
- Object *ST_DLPath, *CY_LinkSpeed;
- Object *TG_ClearList, *TG_AutoConnect, *TG_AskFile, *TG_AutoSave, *TG_AutoAdd;
- Object *CY_Lamp, *CY_ServerList, *CY_AutoCleanup, *ST_NameLength;
- Object *LI_Event, *ST_EventScript, *ST_EventSound, *BT_EventTest;
- Object *ST_MetaServer, *ST_MetaPort, *ST_Server, *ST_LeafPort, *ST_Port, *TG_Firewall;
- Object *SL_DownloadQueue, *SL_UploadQueue, *SL_DownloadPri, *SL_UploadPri;
- Object *ST_QueueRetries, *ST_QueueDelay;
- Object *BT_Save, *BT_Use, *BT_Cancel;
-
- QueueClass = MUI_CreateCustomClass(NULL, MUIC_Slider, NULL, sizeof(struct QueueData), &QueueDispatcher);
-
- if (pages[0] == (char *)_MSG_PRF_USER_TAB)
- localize_array(pages);
- if (events[0] == (char *)_MSG_PRF_EVT_START)
- localize_array(events);
- if (lamps[0] == (char *)_MSG_PRF_LAMPLAMP)
- localize_array(lamps);
- if (ServerListOpts[0] == (char *)_MSG_PRF_SERVERLIST_FORGET)
- localize_array(ServerListOpts);
- if (AutoCleanupOpts[0] == (char *)_MSG_PRF_AUTOCLEANUP_NONE)
- localize_array(AutoCleanupOpts);
-
- if (obj = (Object *)DoSuperNew(cl, obj,
- MUIA_HelpNode, "config",
- MUIA_Window_Title, MSG_PRF_TITLE,
- MUIA_Window_ID, MAKE_ID('S','E','T','T'),
- WindowContents, VGroup,
- Child, RegisterGroup(pages),
- Child, VGroup,
- Child, ColGroup(2), GroupFrameT(MSG_PRF_ACCOUNT_FRAME),
- MUIA_HelpNode, "conf-user",
- Child, Label2(MSG_PRF_USERNAME),
- Child, HGroup,
- Child, ST_User = TextinputObject,
- StringFrame,
- MUIA_Textinput_Multiline, FALSE,
- MUIA_String_Reject, ":%$ ",
- MUIA_String_AdvanceOnCR, TRUE,
- MUIA_CycleChain, 1,
- MUIA_ShortHelp, MSG_PRF_USERNAME_HELP,
- End,
- Child, Label2(MSG_PRF_BYPASS_REGISTRATION),
- Child, TG_BypassReg = ImageObject,
- ButtonFrame,
- MUIA_HorizWeight, 10,
- MUIA_Background, MUII_ButtonBack,
- MUIA_InputMode, MUIV_InputMode_Toggle,
- MUIA_ShowSelState, FALSE,
- MUIA_Image_Spec, "6:15",
- MUIA_Selected, FALSE,
- MUIA_ShortHelp, MSG_PRF_BYPASS_REGISTRATION_HELP,
- End,
- End,
- Child, Label2(MSG_PRF_PASSWORD),
- Child, ST_Password = StringObject,
- StringFrame,
- MUIA_String_Reject, " ",
- MUIA_String_AdvanceOnCR, TRUE,
- MUIA_String_Secret, TRUE,
- MUIA_CycleChain, 1,
- MUIA_ShortHelp, MSG_PRF_PASSWORD_HELP,
- End,
- Child, Label2(MSG_PRF_EMAIL),
- Child, HGroup,
- Child, ST_EMail = TextinputObject,
- StringFrame,
- MUIA_Textinput_Multiline, FALSE,
- MUIA_HorizWeight, 150,
- MUIA_String_AdvanceOnCR, TRUE,
- MUIA_CycleChain, 1,
- MUIA_ShortHelp, MSG_PRF_EMAIL_HELP,
- End,
- Child, EMailButton = SimpleButton(MSG_PRF_UPDATE_GAD),
- MUIA_ShortHelp, MSG_PRF_UPDATE_HELP,
- End,
- Child, Label2(MSG_PRF_CONNECTION),
- Child, CY_LinkSpeed = CycleObject,
- MUIA_Cycle_Active, prf->link,
- MUIA_Cycle_Entries, nap_linktype,
- MUIA_ShortHelp, MSG_PRF_CONNECTION_HELP,
- End,
- End,
- Child, ColGroup(2),
- Child, Label2(MSG_PRF_DLPATH),
- Child, HGroup,
- Child, ST_DLPath = PopaslObject,
- MUIA_Popstring_String, TextinputObject,
- StringFrame,
- MUIA_Textinput_Multiline, FALSE,
- MUIA_String_MaxLen, 256,
- MUIA_CycleChain, 1,
- MUIA_ShortHelp, MSG_PRF_DLPATH_HELP,
- End,
- MUIA_Popstring_Button, PopButton(MUII_PopFile),
- MUIA_Popasl_Type, ASL_FileRequest,
- ASLFR_TitleText, MSG_PRF_DLPATH_REQ,
- ASLFR_DrawersOnly, TRUE,
- End,
- Child, Label2(MSG_PRF_NAMELENGTH),
- Child, ST_NameLength = TextinputObject,
- StringFrame,
- MUIA_Textinput_Multiline, FALSE,
- MUIA_HorizWeight, 25,
- MUIA_String_Integer, prf->NameLength,
- MUIA_String_Accept, "0123456789",
- MUIA_String_MaxLen, 4,
- MUIA_CycleChain, 1,
- MUIA_ShortHelp, MSG_PRF_NAMELENGTH_HELP,
- End,
- End,
- End,
- End,
- Child, VGroup,
- MUIA_HelpNode, "conf-opts",
- Child, VGroup, GroupFrameT(MSG_PRF_MISC_FRAME),
- Child, maketoggle(MSG_PRF_AUTOCONNECT, &TG_AutoConnect),
- Child, maketoggle(MSG_PRF_CLEARLIST, &TG_ClearList ),
- Child, maketoggle(MSG_PRF_ALWAYSASK, &TG_AskFile ),
- Child, maketoggle(MSG_PRF_ADDTOLIBRARY, &TG_AutoAdd ),
- Child, maketoggle(MSG_PRF_AUTOSAVELIB, &TG_AutoSave ),
- End,
- Child, ColGroup(2),
- Child, Label2(MSG_PRF_AUTOCLEANUP_TMP),
- Child, CY_AutoCleanup = CycleObject,
- MUIA_Cycle_Active, prf->AutoCleanup,
- MUIA_Cycle_Entries, AutoCleanupOpts,
- MUIA_ShortHelp, MSG_PRF_AUTOCLEANUP_HELP,
- End,
- Child, Label2(MSG_PRF_SERVERLIST),
- Child, CY_ServerList = CycleObject,
- MUIA_Cycle_Active, prf->ServerList,
- MUIA_Cycle_Entries, ServerListOpts,
- MUIA_ShortHelp, MSG_PRF_SERVERLIST_HELP,
- End,
- Child, Label2(MSG_PRF_LAMPCLASS),
- Child, CY_Lamp = CycleObject,
- MUIA_Cycle_Active, prf->lamps,
- MUIA_Cycle_Entries, lamps,
- MUIA_ShortHelp, MSG_PRF_LAMPCLASS_HELP,
- End,
- End,
- End,
- Child, VGroup,
- MUIA_HelpNode, "conf-events",
- Child, NListviewObject,
- MUIA_NListview_NList, LI_Event = NListObject,
- InputListFrame,
- MUIA_NList_SourceArray, events,
- End,
- End,
- Child, ColGroup(2),
- Child, Label2(MSG_PRF_COMMAND),
- Child, ST_EventScript = PopaslObject,
- MUIA_Popstring_String, TextinputObject,
- StringFrame,
- MUIA_Textinput_Multiline, FALSE,
- MUIA_String_MaxLen, 256,
- MUIA_CycleChain, 1,
- MUIA_ShortHelp, MSG_PRF_COMMAND_HELP,
- End,
- MUIA_Popstring_Button, PopButton(MUII_PopFile),
- MUIA_Popasl_Type, ASL_FileRequest,
- ASLFR_TitleText, MSG_PRF_SCRIPT_REQ,
- End,
- Child, Label2(MSG_PRF_SOUND),
- Child, HGroup,
- Child, ST_EventSound = PopaslObject,
- MUIA_HorizWeight, 300,
- MUIA_Popstring_String, TextinputObject,
- StringFrame,
- MUIA_Textinput_Multiline, FALSE,
- MUIA_String_MaxLen, 256,
- MUIA_CycleChain, 1,
- End,
- MUIA_Popstring_Button, PopButton(MUII_PopFile),
- MUIA_Popasl_Type, ASL_FileRequest,
- ASLFR_TitleText, MSG_PRF_SOUND_REQ,
- End,
- Child, BT_EventTest = SimpleButton(MSG_PRF_SOUNDTEST_GAD),
- End,
- End,
- End,
- Child, VGroup,
- Child, VGroup, GroupFrameT(MSG_PRF_NETWORK_FRAME),
- Child, ColGroup(2),
- MUIA_HelpNode, "conf-adv",
- Child, Label2(MSG_PRF_MAINSERVER),
- Child, HGroup,
- Child, ST_MetaServer = TextinputObject,
- StringFrame,
- MUIA_Textinput_Multiline, FALSE,
- MUIA_String_AdvanceOnCR, TRUE,
- MUIA_CycleChain, 1,
- MUIA_String_Accept, "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789.-",
- MUIA_ShortHelp, MSG_PRF_MAINSERVER_HELP,
- End,
- Child, Label2(MSG_PRF_SERVER_PORT),
- Child, ST_MetaPort = TextinputObject,
- StringFrame,
- MUIA_Textinput_Multiline, FALSE,
- MUIA_HorizWeight, 45,
- MUIA_String_Integer, prf->MetaPort,
- MUIA_String_Accept, "0123456789",
- MUIA_String_MaxLen, 6,
- MUIA_CycleChain, 1,
- End,
- End,
- Child, Label2(MSG_PRF_MP3SERVER),
- Child, HGroup,
- Child, ST_Server = TextinputObject,
- StringFrame,
- MUIA_Textinput_Multiline, FALSE,
- MUIA_String_AdvanceOnCR, TRUE,
- MUIA_CycleChain, 1,
- MUIA_String_Accept, "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789.-",
- MUIA_ShortHelp, MSG_PRF_MP3SERVER_HELP,
- End,
- Child, Label2(MSG_PRF_SERVER_PORT),
- Child, ST_LeafPort = TextinputObject,
- StringFrame,
- MUIA_Textinput_Multiline, FALSE,
- MUIA_HorizWeight, 45,
- MUIA_String_Accept, "0123456789",
- MUIA_String_MaxLen, 6,
- MUIA_CycleChain, 1,
- End,
- End,
- Child, Label2(MSG_PRF_LISTENPORT),
- Child, HGroup,
- Child, ST_Port = TextinputObject,
- StringFrame,
- MUIA_Textinput_Multiline, FALSE,
- MUIA_HorizWeight, 90,
- MUIA_String_Integer, prf->port,
- MUIA_String_Accept, "0123456789",
- MUIA_String_MaxLen, 6,
- MUIA_CycleChain, 1,
- MUIA_ShortHelp, MSG_PRF_LISTENPORT_HELP,
- End,
- Child, Label2(MSG_PRF_BEHINDFW),
- Child, TG_Firewall = ImageObject,
- ButtonFrame,
- MUIA_HorizWeight, 10,
- MUIA_Background, MUII_ButtonBack,
- MUIA_InputMode, MUIV_InputMode_Toggle,
- MUIA_ShowSelState, FALSE,
- MUIA_Image_Spec, "6:15",
- MUIA_Selected, FALSE,
- MUIA_ShortHelp, MSG_PRF_BEHINDFW_HELP,
- End,
- End,
- End,
- End,
- Child, VGroup, GroupFrameT(MSG_PRF_TRANSFER_FRAME),
- Child, ColGroup(4),
- Child, Label2(MSG_PRF_DLQUEUE),
- Child, SL_DownloadQueue = NewObject(QueueClass->mcc_Class, 0,
- MUIA_Slider_Min, 1,
- MUIA_Slider_Max, 26,
- MUIA_Numeric_Value, 26,
- MUIA_CycleChain, 1,
- MUIA_ShortHelp, MSG_PRF_DLQUEUE_HELP,
- TAG_DONE),
- Child, Label2(MSG_PRF_TASKPRI),
- Child, SL_DownloadPri = NumericbuttonObject,
- MUIA_Numeric_Min, -128,
- MUIA_Numeric_Max, 0,
- MUIA_ShortHelp, MSG_PRF_TASKPRI_HELP,
- End,
- Child, Label2(MSG_PRF_ULQUEUE),
- Child, SL_UploadQueue = NewObject(QueueClass->mcc_Class, 0,
- MUIA_Slider_Min, 0,
- MUIA_Slider_Max, 26,
- MUIA_Numeric_Value, 5,
- MUIA_CycleChain, 1,
- MUIA_ShortHelp, MSG_PRF_ULQUEUE_HELP,
- TAG_DONE),
- Child, Label2(MSG_PRF_TASKPRI),
- Child, SL_UploadPri = NumericbuttonObject,
- MUIA_Numeric_Min, -128,
- MUIA_Numeric_Max, 0,
- MUIA_ShortHelp, MSG_PRF_TASKPRI_HELP,
- End,
- End,
- Child, HGroup,
- Child, Label2(MSG_PRF_RETRIES),
- Child, ST_QueueRetries = TextinputObject,
- StringFrame,
- MUIA_Textinput_Multiline, FALSE,
- MUIA_String_Integer, prf->QueueRetries,
- MUIA_String_Accept, "0123456789",
- MUIA_String_MaxLen, 6,
- MUIA_CycleChain, 1,
- MUIA_ShortHelp, MSG_PRF_RETRIES_HELP,
- End,
- Child, Label2(MSG_PRF_RETRYDELAY),
- Child, ST_QueueDelay = TextinputObject,
- StringFrame,
- MUIA_Textinput_Multiline, FALSE,
- MUIA_String_Integer, prf->QueueDelay,
- MUIA_String_Accept, "0123456789",
- MUIA_String_MaxLen, 6,
- MUIA_CycleChain, 1,
- MUIA_ShortHelp, MSG_PRF_RETRYDELAY_HELP,
- End,
- End,
- End,
- End,
- End,
- Child, HGroup,
- Child, BT_Save = SimpleButton(MSG_PRF_SAVE_GAD ),
- Child, BT_Use = SimpleButton(MSG_PRF_USE_GAD ),
- Child, BT_Cancel = SimpleButton(MSG_PRF_CANCEL_GAD),
- End,
-
- End,
- TAG_MORE, msg->ops_AttrList))
- {
- data = INST_DATA(cl,obj);
-
- data->ST_User = ST_User;
- data->ST_Password = ST_Password;
- data->ST_EMail = ST_EMail;
- data->TG_BypassReg = TG_BypassReg;
- data->ST_DLPath = ST_DLPath;
- data->CY_LinkSpeed = CY_LinkSpeed;
-
- data->TG_ClearList = TG_ClearList;
- data->TG_AutoConnect = TG_AutoConnect;
- data->TG_AskFile = TG_AskFile;
- data->TG_AutoSave = TG_AutoSave;
- data->TG_AutoAdd = TG_AutoAdd;
- data->CY_Lamp = CY_Lamp;
- data->CY_ServerList = CY_ServerList;
- data->CY_AutoCleanup = CY_AutoCleanup;
- data->ST_NameLength = ST_NameLength;
-
- data->LI_Event = LI_Event;
- data->ST_EventScript = ST_EventScript;
- data->ST_EventSound = ST_EventSound;
-
- data->ST_MetaServer = ST_MetaServer;
- data->ST_Server = ST_Server;
- data->ST_MetaPort = ST_MetaPort;
- data->ST_LeafPort = ST_LeafPort;
- data->ST_Port = ST_Port;
- data->TG_Firewall = TG_Firewall;
- data->SL_DownloadQueue = SL_DownloadQueue;
- data->SL_DownloadPri = SL_DownloadPri;
- data->SL_UploadQueue = SL_UploadQueue;
- data->SL_UploadPri = SL_UploadPri;
- data->ST_QueueRetries = ST_QueueRetries;
- data->ST_QueueDelay = ST_QueueDelay;
-
- data->lastitem = -1;
-
- DoMethod(EMailButton, MUIM_Notify, MUIA_Pressed, FALSE, obj, 1, PRF_UPDATE);
- DoMethod(LI_Event, MUIM_Notify, MUIA_NList_EntryClick, MUIV_EveryTime, obj, 1, PRF_ENTRY);
- DoMethod(BT_EventTest, MUIM_Notify, MUIA_Pressed, FALSE, obj, 1, PRF_TESTSND);
- DoMethod(TG_Firewall, MUIM_Notify, MUIA_Selected, MUIV_EveryTime, data->ST_Port, 3, MUIM_Set, MUIA_Disabled, MUIV_TriggerValue);
-
- DoMethod(ST_QueueDelay, MUIM_Notify, MUIA_String_Acknowledge, MUIV_EveryTime, obj, 1, PRF_VALIDDELAY);
-
- DoMethod(BT_Save, MUIM_Notify, MUIA_Pressed, FALSE, gui->iconpanel, 2, PANEL_CLOSEPRF, PRF_SAVE );
- DoMethod(BT_Use, MUIM_Notify, MUIA_Pressed, FALSE, gui->iconpanel, 2, PANEL_CLOSEPRF, PRF_USE );
- DoMethod(BT_Cancel, MUIM_Notify, MUIA_Pressed, FALSE, gui->iconpanel, 2, PANEL_CLOSEPRF, PRF_CANCEL);
-
- DoMethod(obj, MUIM_Notify, MUIA_Window_CloseRequest, TRUE, gui->iconpanel, 2, PANEL_CLOSEPRF, PRF_CANCEL);
-
- return((ULONG)obj);
- }
- return(0);
- }
-
-
- void prf_set(struct prfdata *data)
- {
- set(data->ST_User, MUIA_String_Contents, prf->user);
- set(data->ST_Password, MUIA_String_Contents, prf->pass);
- set(data->ST_EMail, MUIA_String_Contents, prf->email);
- set(data->TG_BypassReg, MUIA_Selected, prf->BypassRegistration);
- set(data->ST_DLPath, MUIA_String_Contents, prf->dlpath);
- set(data->CY_LinkSpeed, MUIA_Cycle_Active, prf->link);
-
- set(data->TG_ClearList, MUIA_Selected, prf->clrlist);
- set(data->TG_AutoConnect, MUIA_Selected, prf->autocon);
- set(data->TG_AskFile, MUIA_Selected, prf->askfile);
- set(data->TG_AutoAdd, MUIA_Selected, prf->autoadd);
- set(data->TG_AutoSave, MUIA_Selected, prf->autosave);
- set(data->CY_Lamp, MUIA_Cycle_Active, prf->lamps);
- set(data->CY_ServerList, MUIA_Cycle_Active, prf->ServerList);
- set(data->CY_AutoCleanup, MUIA_Cycle_Active, prf->AutoCleanup);
- set(data->ST_NameLength, MUIA_String_Integer, prf->NameLength);
-
- set(data->ST_MetaServer, MUIA_String_Contents, prf->MetaServer);
- set(data->ST_MetaPort, MUIA_String_Integer, prf->MetaPort);
- set(data->ST_Server, MUIA_String_Contents, prf->LeafServer);
- set(data->ST_LeafPort, MUIA_String_Integer, prf->LeafPort);
-
- set(data->ST_Port, MUIA_String_Integer, prf->port);
- if (prf->port)
- set(data->TG_Firewall, MUIA_Selected, FALSE);
- else {
- set(data->TG_Firewall, MUIA_Selected, TRUE);
- set(data->ST_Port, MUIA_String_Integer, PRF_DEFAULT_PORT);
- }
- set(data->SL_DownloadQueue, MUIA_Numeric_Value, prf->DownloadQueueLimit);
- set(data->SL_DownloadPri, MUIA_Numeric_Value, prf->DownloadTaskPri );
- set(data->SL_UploadQueue, MUIA_Numeric_Value, prf->UploadQueueLimit );
- set(data->SL_UploadPri, MUIA_Numeric_Value, prf->UploadTaskPri );
- set(data->ST_QueueRetries, MUIA_String_Integer, prf->QueueRetries );
- set(data->ST_QueueDelay, MUIA_String_Integer, prf->QueueDelay );
- }
-
-
- void prf_use(struct prfdata *data)
- {
- u_long tmp, tmp2;
-
- /* Advanced */
-
- GetAttr(MUIA_String_Contents, data->ST_MetaServer, &tmp);
- if (((char*)tmp)[0]==0) prf->MetaServer=NULL; else prf->MetaServer=strdup((char*)tmp);
- GetAttr(MUIA_String_Integer, data->ST_MetaPort, &tmp);
- if ((int)tmp < 65536) prf->MetaPort = (int)tmp;
- else prf->MetaPort = 65535;
-
- GetAttr(MUIA_String_Contents, data->ST_Server, &tmp);
- if (((char*)tmp)[0]==0) prf->LeafServer=NULL; else prf->LeafServer=strdup((char*)tmp);
- GetAttr(MUIA_String_Integer, data->ST_LeafPort, &tmp);
- if ((int)tmp < 65536) prf->LeafPort = (int)tmp;
- else prf->LeafPort = 65535;
-
- GetAttr(MUIA_Selected, data->TG_Firewall, &tmp);
- if (!tmp) {
- GetAttr(MUIA_String_Integer, data->ST_Port, &tmp);
- if ((int)tmp < 65536) prf->port = (int)tmp;
- else prf->port = 65535;
- }
- else prf->port = 0;
-
- GetAttr(MUIA_Numeric_Value, data->SL_DownloadQueue, &tmp);
- if (tmp > prf->DownloadQueueLimit) {
- /* Limit was raised, so we check the queue right away */
- prf->DownloadQueueLimit = tmp;
- DoMethod(gui->dwin, DL_CHECKQUEUE);
- }
- else prf->DownloadQueueLimit = tmp;
-
- GetAttr(MUIA_Numeric_Value, data->SL_DownloadPri, &tmp);
- prf->DownloadTaskPri = tmp;
-
- GetAttr(MUIA_Numeric_Value, data->SL_UploadQueue, &tmp);
- prf->UploadQueueLimit = tmp;
-
- GetAttr(MUIA_Numeric_Value, data->SL_UploadPri, &tmp);
- prf->UploadTaskPri = tmp;
-
- GetAttr(MUIA_String_Integer, data->ST_QueueRetries, &tmp);
- prf->QueueRetries = (int)tmp;
-
- GetAttr(MUIA_String_Integer, data->ST_QueueDelay, &tmp);
- if ((int)tmp > 0) {
- prf->QueueDelay = (int)tmp;
- DoMethod(gui->dwin, DL_SETDELAY, prf->QueueDelay);
- }
-
- /* User */
-
- GetAttr(MUIA_String_Contents, data->ST_User, &tmp);
- if (((char*)tmp)[0]==0) prf->user=NULL; else prf->user=strdup((char*)tmp);
-
- GetAttr(MUIA_String_Contents, data->ST_Password, &tmp);
- if (((char*)tmp)[0]==0) prf->pass=NULL; else prf->pass=strdup((char*)tmp);
-
- GetAttr(MUIA_String_Contents, data->ST_EMail, &tmp);
- if (((char*)tmp)[0]==0) prf->email=NULL; else prf->email=strdup((char*)tmp);
-
- GetAttr(MUIA_Selected, data->TG_BypassReg, &tmp);
- prf->BypassRegistration = tmp;
-
- GetAttr(MUIA_String_Contents, data->ST_DLPath, &tmp);
- if (((char *)tmp)[0] == 0) prf->dlpath=NULL;
- else {
- prf->dlpath=strdup((char*)tmp);
- DoMethod(gui->shwin, SHARE_SETDIR, prf->dlpath);
- }
-
- /* Options */
-
- GetAttr(MUIA_Cycle_Active, data->CY_LinkSpeed, &tmp);
- prf->link = tmp;
-
- GetAttr(MUIA_Selected, data->TG_ClearList, &tmp);
- prf->clrlist = tmp;
-
- GetAttr(MUIA_Selected, data->TG_AutoConnect, &tmp);
- prf->autocon = tmp;
-
- GetAttr(MUIA_Selected, data->TG_AskFile, &tmp);
- prf->askfile = tmp;
-
- GetAttr(MUIA_Selected, data->TG_AutoAdd, &tmp);
- prf->autoadd = tmp;
-
- GetAttr(MUIA_Selected, data->TG_AutoSave, &tmp);
- prf->autosave = tmp;
-
- GetAttr(MUIA_Cycle_Active, data->CY_Lamp, &tmp);
- prf->lamps = tmp;
-
- GetAttr(MUIA_Cycle_Active, data->CY_AutoCleanup, &tmp);
- prf->AutoCleanup = tmp;
-
- GetAttr(MUIA_Cycle_Active, data->CY_ServerList, &tmp);
- prf->ServerList = tmp;
-
- GetAttr(MUIA_String_Integer, data->ST_NameLength, &tmp);
- if ((int)tmp > 7 && (int)tmp < 108) prf->NameLength = (int)tmp;
-
- /* Events */
-
- GetAttr(MUIA_NList_Active, data->LI_Event, &tmp);
- if (tmp != MUIV_NList_Active_Off) {
- if (prf_eventflags[tmp]&1) {
- GetAttr(MUIA_String_Contents, data->ST_EventScript, &tmp2);
- if (((char*)tmp2)[0]==0) prf->scripts[tmp]=NULL;
- else prf->scripts[tmp]=strdup((char*)tmp2);
- }
- if (prf_eventflags[tmp]&2) {
- GetAttr(MUIA_String_Contents, data->ST_EventSound, &tmp2);
- if (((char*)tmp2)[0]==0) prf->sounds[tmp]=NULL;
- else prf->sounds[tmp]=strdup((char*)tmp2);
- }
- }
-
- prf_save("ENV:"AMSTER_PREFS);
- }
-
-
- void prf_setup(int argc, char *argv[])
- {
- int i;
- memset(prf,0,sizeof(struct prefsdata));
-
- /* defaults */
- prf->MetaServer = "server.napster.com";
- prf->MetaPort = 8875;
- prf->napvers = "Amster "AMSTER_VERSION;
- prf->port = PRF_DEFAULT_PORT;
- prf->email = "anon@napster.com";
- prf->BypassRegistration = FALSE;
- prf->dlpath = "SYS:";
- prf->link = 0;
- prf->NameLength = 107;
- prf->DownloadQueueLimit = 26;
- prf->UploadQueueLimit = 2;
- prf->UploadTaskPri = -1;
- prf->QueueRetries = 180;
- prf->QueueDelay = 20;
- prf->regflag = 1; /* >:) */
- prf->noiconpanel = 1;
- for (i=0; i<8; i++) {
- prf->ColumnOrder[i] = i;
- }
- prf->ColumnOrder[8] = -1;
- }
-
-
- BOOL prf_load(char *fname)
- {
- FILE *f;
- char tmp[100], *s, *c;
- int i;
- u_long t;
-
- f=fopen(fname,"r");
- if(f==0) return FALSE;
-
- while (fgets(tmp, sizeof(tmp), f)) {
- s = strtok(tmp," ");
- if (!s) {
- continue;
- }
- else if (strcmp(s, "<search>")==0) {
- while(fgets(tmp, sizeof(tmp), f)) {
- s = &tmp[0];
- c = nap_token(&s);
- if (!c) continue;
- else if(strcmp(c,"</search>")==0) break;
- else if(strcmp(c,"max")==0) {
- t = nap_ltoken(&s);
- if(t>2 && t<1000) prf->max = t;
- }
- else if(strcmp(c,"advopts")==0) {
- prf->speedqual = nap_ltoken(&s);
- prf->speedval = nap_ltoken(&s);
- prf->bitratequal = nap_ltoken(&s);
- prf->bitrateval = nap_ltoken(&s);
- prf->freqqual = nap_ltoken(&s);
- prf->freqval = nap_ltoken(&s);
- }
- }
- } else if(strcmp(s,"columnorder")==0) {
- s += 12;
- prf->ColumnOrder[0] = nap_ltoken(&s);
- prf->ColumnOrder[1] = nap_ltoken(&s);
- prf->ColumnOrder[2] = nap_ltoken(&s);
- prf->ColumnOrder[3] = nap_ltoken(&s);
- prf->ColumnOrder[4] = nap_ltoken(&s);
- prf->ColumnOrder[5] = nap_ltoken(&s);
- prf->ColumnOrder[6] = nap_ltoken(&s);
- prf->ColumnOrder[7] = nap_ltoken(&s);
- } else if(strcmp(s,"iconpanel")==0) {
- prf->noiconpanel = 0;
- } else if(strcmp(s,"metaserver")==0) {
- if(s=strtok(NULL,"\n")) prf->MetaServer=strdup(s);
- } else if(strcmp(s,"leafserver")==0) {
- if(s=strtok(NULL,"\n")) prf->LeafServer=strdup(s);
- } else if(strcmp(s,"metaport")==0) {
- if(s=strtok(NULL,"\n")) prf->MetaPort = atoi(s);
- } else if(strcmp(s,"leafport")==0) {
- if(s=strtok(NULL,"\n")) prf->LeafPort = atoi(s);
- } else if(strcmp(s,"listport")==0) {
- if(s=strtok(NULL,"\n")) prf->port = atoi(s);
- } else if(strcmp(s,"downloadqueue")==0) {
- if(s=strtok(NULL,"\n")) prf->DownloadQueueLimit = atoi(s);
- } else if(strcmp(s,"downloadpriority")==0) {
- if(s=strtok(NULL,"\n")) prf->DownloadTaskPri = atoi(s);
- } else if(strcmp(s,"uploadqueue")==0) {
- if(s=strtok(NULL,"\n")) prf->UploadQueueLimit = atoi(s);
- } else if(strcmp(s,"uploadpriority")==0) {
- if(s=strtok(NULL,"\n")) prf->UploadTaskPri = atoi(s);
- } else if(strcmp(s,"queueretries")==0) {
- if(s=strtok(NULL,"\n")) prf->QueueRetries = atoi(s);
- } else if(strcmp(s,"queuedelay")==0) {
- if(s=strtok(NULL,"\n")) {
- t = atoi(s);
- if (t > 0) prf->QueueDelay = t;
- }
-
- }
- else if (strcmp(s,"script")==0) {
- if (s=strtok(NULL," ")) {
- if (strcmp(s, "startup") == 0 && (s = strtok(NULL, "\n"))) {
- prf->scripts[PRFE_STARTUP] = strdup(s);
- } else if (strcmp(s, "exit") == 0 && (s = strtok(NULL, "\n"))) {
- prf->scripts[PRFE_EXIT] = strdup(s);
- } else if (strcmp(s, "connect") == 0 && (s = strtok(NULL, "\n"))) {
- prf->scripts[PRFE_CONNECT] = strdup(s);
- } else if (strcmp(s, "disconnect") == 0 && (s = strtok(NULL, "\n"))) {
- prf->scripts[PRFE_DISCONNECT] = strdup(s);
- } else if (strcmp(s, "downloadstart") == 0 && (s = strtok(NULL, "\n"))) {
- prf->scripts[PRFE_DLSTART] = strdup(s);
- } else if (strcmp(s, "uploadstart") == 0 && (s = strtok(NULL, "\n"))) {
- prf->scripts[PRFE_ULSTART] = strdup(s);
- } else if (strcmp(s, "dlfinish") == 0 && (s = strtok(NULL, "\n"))) {
- prf->scripts[PRFE_DLFINISH] = strdup(s);
- } else if (strcmp(s, "ulfinish") == 0 && (s = strtok(NULL, "\n"))) {
- prf->scripts[PRFE_ULFINISH] = strdup(s);
- } else if (strcmp(s, "downloaderror") == 0 && (s = strtok(NULL, "\n"))) {
- prf->scripts[PRFE_DLERROR] = strdup(s);
- } else if (strcmp(s, "uploaderror") == 0 && (s = strtok(NULL, "\n"))) {
- prf->scripts[PRFE_ULERROR] = strdup(s);
- } else if (strcmp(s, "transerror") == 0 && (s = strtok(NULL, "\n"))) {
- prf->scripts[PRFE_DLERROR] = strdup(s); /* FOR BACKWARDS COMPATIBILITY ONLY! */
- prf->scripts[PRFE_ULERROR] = strdup(s); /* FOR BACKWARDS COMPATIBILITY ONLY! */
- } else if (strcmp(s, "downloadabort") == 0 && (s = strtok(NULL, "\n"))) {
- prf->scripts[PRFE_DLABORT] = strdup(s);
- } else if (strcmp(s, "uploadabort") == 0 && (s = strtok(NULL, "\n"))) {
- prf->scripts[PRFE_ULABORT] = strdup(s);
- } else if (strcmp(s, "incomingmsg") == 0 && (s = strtok(NULL, "\n"))) {
- prf->scripts[PRFE_INMSG] = strdup(s);
- } else if (strcmp(s, "librarydoubleclick") == 0 && (s = strtok(NULL, "\n"))) {
- prf->scripts[PRFE_LIB_DCLICK] = strdup(s);
- } else if (strcmp(s, "downloaddoubleclick") == 0 && (s = strtok(NULL, "\n"))) {
- prf->scripts[PRFE_DL_DCLICK] = strdup(s);
- } else if (strcmp(s, "mp3play") == 0 && (s = strtok(NULL, "\n"))) {
- prf->scripts[PRFE_PLAYMP3] = strdup(s);
- }
- }
-
- }
- else if (strcmp(s,"sound")==0) {
- if (s=strtok(NULL," ")) {
- /* Old */
- i = atoi(s);
- if (i>0 && i<8 && (s=strtok(NULL,"\n")))
- prf->sounds[i-1] = strdup(s);
- /* New */
- else {
- if (strcmp(s, "startup") == 0 && (s = strtok(NULL, "\n"))) {
- prf->sounds[PRFE_STARTUP] = strdup(s);
- } else if (strcmp(s, "exit") == 0 && (s = strtok(NULL, "\n"))) {
- prf->sounds[PRFE_EXIT] = strdup(s);
- } else if (strcmp(s, "connect") == 0 && (s = strtok(NULL, "\n"))) {
- prf->sounds[PRFE_CONNECT] = strdup(s);
- } else if (strcmp(s, "disconnect") == 0 && (s = strtok(NULL, "\n"))) {
- prf->sounds[PRFE_DISCONNECT] = strdup(s);
- } else if (strcmp(s, "downloadstart") == 0 && (s = strtok(NULL, "\n"))) {
- prf->sounds[PRFE_DLSTART] = strdup(s);
- } else if (strcmp(s, "uploadstart") == 0 && (s = strtok(NULL, "\n"))) {
- prf->sounds[PRFE_ULSTART] = strdup(s);
- } else if (strcmp(s, "dlfinish") == 0 && (s = strtok(NULL, "\n"))) {
- prf->sounds[PRFE_DLFINISH] = strdup(s);
- } else if (strcmp(s, "ulfinish") == 0 && (s = strtok(NULL, "\n"))) {
- prf->sounds[PRFE_ULFINISH] = strdup(s);
- } else if (strcmp(s, "downloaderror") == 0 && (s = strtok(NULL, "\n"))) {
- prf->sounds[PRFE_DLERROR] = strdup(s);
- } else if (strcmp(s, "uploaderror") == 0 && (s = strtok(NULL, "\n"))) {
- prf->sounds[PRFE_ULERROR] = strdup(s);
- } else if (strcmp(s, "transerror") == 0 && (s = strtok(NULL, "\n"))) {
- prf->sounds[PRFE_DLERROR] = strdup(s); /* FOR BACKWARDS COMPATIBILITY ONLY! */
- prf->sounds[PRFE_ULERROR] = strdup(s); /* FOR BACKWARDS COMPATIBILITY ONLY! */
- } else if (strcmp(s, "downloadabort") == 0 && (s = strtok(NULL, "\n"))) {
- prf->sounds[PRFE_DLABORT] = strdup(s);
- } else if (strcmp(s, "uploadabort") == 0 && (s = strtok(NULL, "\n"))) {
- prf->sounds[PRFE_ULABORT] = strdup(s);
- } else if (strcmp(s, "incomingmsg") == 0 && (s = strtok(NULL, "\n"))) {
- prf->sounds[PRFE_INMSG] = strdup(s);
- } else if (strcmp(s, "librarydoubleclick") == 0 && (s = strtok(NULL, "\n"))) {
- prf->sounds[PRFE_LIB_DCLICK] = strdup(s);
- } else if (strcmp(s, "downloaddoubleclick") == 0 && (s = strtok(NULL, "\n"))) {
- prf->sounds[PRFE_DL_DCLICK] = strdup(s);
- } else if (strcmp(s, "mp3play") == 0 && (s = strtok(NULL, "\n"))) {
- prf->sounds[PRFE_PLAYMP3] = strdup(s);
- }
- }
-
- }
-
- } else if(strcmp(s,"user")==0) {
- if(s=strtok(NULL,"\n")) prf->user=strdup(s);
- } else if(strcmp(s,"pass")==0) {
- if(s=strtok(NULL,"\n")) prf->pass=strdup(s);
- } else if(strcmp(s,"email")==0) {
- if(s=strtok(NULL,"\n")) prf->email=strdup(s);
- } else if(strcmp(s,"bypassreg")==0) {
- prf->BypassRegistration = TRUE;
- } else if(strcmp(s,"dlpath")==0) {
- if(s=strtok(NULL,"\n")) prf->dlpath=strdup(s);
- } else if(strcmp(s,"linktype")==0) {
- if(s=strtok(NULL,"\n")) prf->link=atoi(s);
- } else if(strcmp(s,"optclrlist")==0) {
- prf->clrlist = 1;
- } else if(strcmp(s,"autoconnect")==0) {
- prf->autocon = 1;
- } else if(strcmp(s,"fullpath")==0) {
- prf->fullpath = 1;
- } else if(strcmp(s,"alwaysaskfilename")==0) {
- prf->askfile = 1;
- } else if(strcmp(s,"autoaddshares")==0) {
- prf->autoadd = 1;
- } else if(strcmp(s,"autosaveshares")==0) {
- prf->autosave = 1;
- } else if(strcmp(s,"lamptype")==0) {
- if(s=strtok(NULL,"\n")) prf->lamps=atoi(s);
- } else if(strcmp(s,"autocleanup")==0) {
- if(s=strtok(NULL,"\n")) prf->AutoCleanup=atoi(s);
- } else if(strcmp(s,"serverlist")==0) {
- if(s=strtok(NULL,"\n")) prf->ServerList=atoi(s);
- } else if(strcmp(s,"namelength")==0) {
- if(s=strtok(NULL,"\n")) {
- t = atoi(s);
- if (t > 7 && t < 108) prf->NameLength = t;
- }
- }
- }
- fclose(f);
-
- return TRUE;
- }
-
-
- void prf_save(char *fname)
- {
- FILE *f;
- u_long tmp;
-
- f=fopen(fname,"w");
- if(f==0) {
- gui_debug((char *)MSG_ERROR_SAVE);
- return;
- }
-
- GetAttr(MUIA_Menuitem_Checked,gui->iconpanelmenu,&tmp);
- if (tmp==TRUE) fprintf(f,"iconpanel \n");
-
- /* Advanced */
- if (prf->MetaServer) fprintf(f, "metaserver %s\n", prf->MetaServer);
- if (prf->MetaPort) fprintf(f, "metaport %d\n", prf->MetaPort);
- if (prf->LeafServer) fprintf(f, "leafserver %s\n", prf->LeafServer);
- if (prf->LeafPort) fprintf(f, "leafport %d\n", prf->LeafPort);
- fprintf(f, "listport %d\n", prf->port);
- fprintf(f, "downloadqueue %d\n", prf->DownloadQueueLimit);
- fprintf(f, "downloadpriority %d\n", prf->DownloadTaskPri);
- fprintf(f, "uploadqueue %d\n", prf->UploadQueueLimit);
- fprintf(f, "uploadpriority %d\n", prf->UploadTaskPri);
- fprintf(f, "queueretries %d\n", prf->QueueRetries);
- fprintf(f, "queuedelay %d\n", prf->QueueDelay);
-
- /* User */
- if (prf->user) fprintf(f,"user %s\n",prf->user);
- if (prf->pass) fprintf(f,"pass %s\n",prf->pass);
- if (prf->email) fprintf(f,"email %s\n",prf->email);
- if (prf->BypassRegistration) fprintf(f, "bypassreg \n");
- if (prf->dlpath) fprintf(f,"dlpath %s\n",prf->dlpath);
- fprintf(f,"linktype %d\n",prf->link);
-
- /* Options */
- if (prf->clrlist) fprintf(f,"optclrlist \n");
- if (prf->autocon) fprintf(f,"autoconnect \n");
- if (prf->fullpath) fprintf(f,"fullpath \n");
- if (prf->askfile) fprintf(f,"alwaysaskfilename \n");
- if (prf->autoadd) fprintf(f,"autoaddshares \n");
- if (prf->autosave) fprintf(f,"autosaveshares \n");
- fprintf(f, "lamptype %d\n", prf->lamps);
- fprintf(f, "autocleanup %d\n", prf->AutoCleanup);
- fprintf(f, "serverlist %d\n", prf->ServerList);
- fprintf(f, "namelength %d\n", prf->NameLength);
-
- /* Events */
- if (prf->scripts[PRFE_STARTUP]) fprintf(f, "script startup %s\n", prf->scripts[PRFE_STARTUP] );
- if (prf->sounds[PRFE_STARTUP]) fprintf(f, "sound startup %s\n", prf->sounds[PRFE_STARTUP] );
- if (prf->scripts[PRFE_EXIT]) fprintf(f, "script exit %s\n", prf->scripts[PRFE_EXIT] );
- if (prf->sounds[PRFE_EXIT]) fprintf(f, "sound exit %s\n", prf->sounds[PRFE_EXIT] );
- if (prf->scripts[PRFE_CONNECT]) fprintf(f, "script connect %s\n", prf->scripts[PRFE_CONNECT] );
- if (prf->sounds[PRFE_CONNECT]) fprintf(f, "sound connect %s\n", prf->sounds[PRFE_CONNECT] );
- if (prf->scripts[PRFE_DISCONNECT]) fprintf(f, "script disconnect %s\n", prf->scripts[PRFE_DISCONNECT]);
- if (prf->sounds[PRFE_DISCONNECT]) fprintf(f, "sound disconnect %s\n", prf->sounds[PRFE_DISCONNECT] );
- if (prf->scripts[PRFE_DLSTART] ) fprintf(f, "script downloadstart %s\n", prf->scripts[PRFE_DLSTART] );
- if (prf->sounds[PRFE_DLSTART]) fprintf(f, "sound downloadstart %s\n", prf->sounds[PRFE_DLSTART] );
- if (prf->scripts[PRFE_ULSTART] ) fprintf(f, "script uploadstart %s\n", prf->scripts[PRFE_ULSTART] );
- if (prf->sounds[PRFE_ULSTART]) fprintf(f, "sound uploadstart %s\n", prf->sounds[PRFE_ULSTART] );
- if (prf->scripts[PRFE_DLFINISH]) fprintf(f, "script dlfinish %s\n", prf->scripts[PRFE_DLFINISH] );
- if (prf->sounds[PRFE_DLFINISH]) fprintf(f, "sound dlfinish %s\n", prf->sounds[PRFE_DLFINISH] );
- if (prf->scripts[PRFE_ULFINISH]) fprintf(f, "script ulfinish %s\n", prf->scripts[PRFE_ULFINISH] );
- if (prf->sounds[PRFE_ULFINISH]) fprintf(f, "sound ulfinish %s\n", prf->sounds[PRFE_ULFINISH] );
- if (prf->scripts[PRFE_DLERROR]) fprintf(f, "script downloaderror %s\n", prf->scripts[PRFE_DLERROR] );
- if (prf->sounds[PRFE_DLERROR]) fprintf(f, "sound downloaderror %s\n", prf->sounds[PRFE_DLERROR] );
- if (prf->scripts[PRFE_ULERROR]) fprintf(f, "script uploaderror %s\n", prf->scripts[PRFE_ULERROR] );
- if (prf->sounds[PRFE_ULERROR]) fprintf(f, "sound uploaderror %s\n", prf->sounds[PRFE_ULERROR] );
- if (prf->scripts[PRFE_DLABORT]) fprintf(f, "script downloadabort %s\n", prf->scripts[PRFE_DLABORT] );
- if (prf->sounds[PRFE_DLABORT]) fprintf(f, "sound downloadabort %s\n", prf->sounds[PRFE_DLABORT] );
- if (prf->scripts[PRFE_ULABORT]) fprintf(f, "script uploadabort %s\n", prf->scripts[PRFE_ULABORT] );
- if (prf->sounds[PRFE_ULABORT]) fprintf(f, "sound uploadabort %s\n", prf->sounds[PRFE_ULABORT] );
- if (prf->scripts[PRFE_INMSG]) fprintf(f, "script incomingmsg %s\n", prf->scripts[PRFE_INMSG] );
- if (prf->sounds[PRFE_INMSG]) fprintf(f, "sound incomingmsg %s\n", prf->sounds[PRFE_INMSG] );
- if (prf->scripts[PRFE_LIB_DCLICK]) fprintf(f, "script librarydoubleclick %s\n", prf->scripts[PRFE_LIB_DCLICK]);
- if (prf->sounds[PRFE_LIB_DCLICK]) fprintf(f, "sound librarydoubleclick %s\n", prf->sounds[PRFE_LIB_DCLICK] );
- if (prf->scripts[PRFE_DL_DCLICK]) fprintf(f, "script downloaddoubleclick %s\n", prf->scripts[PRFE_LIB_DCLICK]);
- if (prf->sounds[PRFE_DL_DCLICK]) fprintf(f, "sound downloaddoubleclick %s\n", prf->sounds[PRFE_LIB_DCLICK] );
- if (prf->scripts[PRFE_PLAYMP3]) fprintf(f, "script mp3play %s\n", prf->scripts[PRFE_PLAYMP3] );
- if (prf->sounds[PRFE_PLAYMP3]) fprintf(f, "sound mp3play %s\n", prf->sounds[PRFE_PLAYMP3] );
-
- DoMethod(gui->searchpanel, SEARCH_GET);
-
- fprintf(f, "columnorder %d %d %d %d %d %d %d %d\n",
- prf->ColumnOrder[0],
- prf->ColumnOrder[1],
- prf->ColumnOrder[2],
- prf->ColumnOrder[3],
- prf->ColumnOrder[4],
- prf->ColumnOrder[5],
- prf->ColumnOrder[6],
- prf->ColumnOrder[7]);
-
- fprintf(f,"<search> \n");
- fprintf(f,"advopts");
- fprintf(f," %d",prf->speedqual);
- fprintf(f," %d",prf->speedval);
- fprintf(f," %d",prf->bitratequal);
- fprintf(f," %d",prf->bitrateval);
- fprintf(f," %d",prf->freqqual);
- fprintf(f," %d\n",prf->freqval);
- fprintf(f,"max %d\n",prf->max);
- fprintf(f,"</search>\n");
-
- fclose(f);
- }
-
-
- void prf_entry(struct prfdata *data)
- {
- u_long tmp,tmp2;
-
- GetAttr(MUIA_NList_EntryClick, data->LI_Event, &tmp);
- set(data->ST_EventScript, MUIA_Disabled, FALSE);
- set(data->ST_EventSound, MUIA_Disabled, FALSE);
- if (tmp==-1 || tmp==-2) return;
-
- if (data->lastitem != -1) {
- int i = data->lastitem;
- if (prf_eventflags[i]&1) {
- GetAttr(MUIA_String_Contents, data->ST_EventScript, &tmp2);
- if (((char*)tmp2)[0]==0) prf->scripts[i]=NULL;
- else prf->scripts[i]=strdup((char*)tmp2);
- }
- if (prf_eventflags[i]&2) {
- GetAttr(MUIA_String_Contents, data->ST_EventSound, &tmp2);
- if (((char*)tmp2)[0]==0) prf->sounds[i]=NULL;
- else prf->sounds[i]=strdup((char*)tmp2);
- }
- }
- data->lastitem = tmp;
-
- set(data->ST_EventScript, MUIA_String_Contents, prf->scripts[tmp]);
- set(data->ST_EventSound, MUIA_String_Contents, prf->sounds[tmp]);
-
- if (!(prf_eventflags[tmp]&1))
- set(data->ST_EventScript, MUIA_Disabled, TRUE);
- if (!(prf_eventflags[tmp]&2))
- set(data->ST_EventSound, MUIA_Disabled, TRUE);
- }
-
-
- void prf_event(enum Event no, ...)
- {
- char *tmp, *command;
- char buf[1024];
- va_list ap;
- BOOL alloc = FALSE;
- u_long stmp;
-
- if (prf_eventflags[no]&2 && prf->sounds[no])
- snd_play(prf->sounds[no]);
-
- if (prf_eventflags[no]&1 && prf->scripts[no]) {
- va_start(ap, no);
- sprintf(buf, "Run <>NIL: %s", prf->scripts[no]);
-
- switch (no) {
- case PRFE_DLSTART:
- case PRFE_ULSTART:
- case PRFE_DLFINISH:
- case PRFE_ULFINISH:
- case PRFE_DLERROR:
- case PRFE_ULERROR:
- case PRFE_DLABORT:
- case PRFE_ULABORT:
- case PRFE_LIB_DCLICK:
- case PRFE_DL_DCLICK:
- case PRFE_PLAYMP3:
- if (command = strrep(buf, "%f", va_arg(ap, char *))) alloc = TRUE;
- break;
- case PRFE_CONNECT:
- {
- char port[6];
-
- if (tmp = strrep(buf, "%s", va_arg(ap, char *))) {
- sprintf(port, "%ld", va_arg(ap, int));
- if (command = strrep(tmp, "%p", port)) alloc = TRUE;
- free(tmp);
- }
- break;
- }
- case PRFE_INMSG:
- {
- if (tmp = strrep(buf, "%u", va_arg(ap, char *))) {
- if (command = strrep(tmp, "%m", va_arg(ap, char *))) alloc = TRUE;
- free(tmp);
- }
- break;
- }
- default:
- command = buf;
- }
-
- va_end(ap);
-
- GetAttr(MUIA_Application_Base, gui->app, &stmp);
- if (tmp = strrep(command, "%a", (char *)stmp)) {
- if (alloc) free(command);
- command = tmp;
- alloc = TRUE;
- }
-
- if (command) {
- Execute(command, 0, 0);
- if (alloc) free(command);
- }
- }
- }
-